package com.itheima.operator;

public class OperatorDemo6 {
    public static void main(String[] args) {
        //目标：逻辑运算符
        //1.与 : & :必须前后条件都是true结果才是true
        //需求：找对象，找身高超过160，性别是女的。
              double hight = 165;
              char sex = '女';

        System.out.println(hight > 160  & sex == '女' );
        System.out.println("-----以上是逻辑运算符：与 & -----");


        //2.或 : |  :只要前后有一个条件满足，结果就是true
        //需求：对象，要么身高超过168.5，要么年龄小于30岁。
              int age = 30;
              double hight1 = 170;
        System.out.println(hight1 > 168.5 | age < 30);
        System.out.println("-----以上是逻辑运算符：或 | -----");

        //3.非 : !  :取反
        System.out.println(!(2>1));//false
        System.out.println(!true);
        System.out.println(!false);
        System.out.println("-----以上是逻辑运算符：非 ! -----");

        //4.异或 : ^ :前后条件一致是false，必须前后条件不一样，结果才是true
        System.out.println(true ^ true);//false
        System.out.println(false ^ false);//false
        System.out.println(true ^ false);//true
        System.out.println(false ^ true);//true
        System.out.println("-----以上是逻辑运算符：异或 ^ -----");


        //5. && :短路与 ：必须都是true结果才是true，但是 && 发现左边是false，右边直接不执行。
        // & 即便左边是false但是依然执行右边
        int i = 10;
        int j = 666;
        //System.out.println(i < 1 & ++j > 333);
        System.out.println(i < 1 && ++j > 333);
        System.out.println(j);

        //6. || :短路或 ：前后只要有一个是true结果就是true，但是 || 发现左边是true,右边直接不执行
        //    |   即便左边是true依然执行
        int m = 100;
        int n = 999;
        //System.out.println(m > 1 | ++n > 198);
        System.out.println(m > 1 | ++n > 198);
        System.out.println(n);


    /*
    总结：
    1，逻辑运算符有哪些？有什么特点？
    - & : 前后只要有一个为false，结果就是false。
    - && : 前后只要有一个为false，结果为false，但是&&发现前一个为false，后一个条件不执行。
    - | :  前后只要有一个为true，结果就是true。
    - || : 前后只要有一个为true，结果就是true，但是 || 发现前一个为true，后一个条件不执行。
    - ! : 取反。如： !false = true ; !true = false.
    - ^ : 前后相同是false，前后不同是true.

    注意：在实际开发中，常用的逻辑运算符还是： && 、||、 ! 比较多


     */





    }
}
